home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 032a / acctxt2.zip / COMPILED.TXT < prev    next >
Text File  |  1993-01-15  |  55KB  |  1,360 lines

  1. This document contains a summary of issues regarding Microsoft Access
  2. which have been reported to Microsoft Product Support.  Those issues 
  3. which contain a number in the format of Q##### in the header have been 
  4. confirmed and are documented in the Microsoft Knowledgebase. All others 
  5. issues are still being researched or written at the time this document 
  6. was posted.  The Microsoft Knowledgebase can be accessed at any time on 
  7. GO MSKB at the prompt.  
  8.  
  9.  
  10. ------------------------------------------------------------------------
  11.  
  12. Table of Contents
  13.  
  14. Setup Issues
  15.     Q88914 Running MS-DOS SHARE with Windows for Workgroups
  16.     Q90105 Couldn't Find SYSTEM.MDA or UTILITY.MDA File
  17.     Q90863 Older Versions of Shared DLLs Cause Problems with Access
  18.     Q92639 Cannot Install Cue Cards Without Installing Help
  19.     Q92824 Custom Setup May Show Zero or Negative Disk Space Needed
  20.     Q93694 Setup Problem Regarding the COMMDLG.DLL File and MS Access
  21.     Unconfirmed: Some TSR's and other programs may cause Setup to fail
  22.     Article Pending:  Check command in Stacker 3.0 reports errors 
  23.                       in .mdb files
  24. Print Merge Issues
  25.     Q93427  Using Data From Access In A Word For Windows Print Merge
  26.     Article Pending: Sending The Current Record To Word For Windows Via DDE
  27.     Unconfirmed: Word Print Merge With Fail if the First Field Is NULL
  28.     Unconfirmed: Save As an embedded Word Document Causes File 
  29.                  to Be Deleted
  30. ODBC Issues
  31.     Q90151 Windows for Workgroups, Novell, SQL Server, and Access
  32.     Unconfirmed: GP Fault Using an Out of Date ODBC Driver
  33.     Unconfirmed: INF: Error MSG: ODBC - couldn't find ODBC.DLL
  34.     Unconfirmed:  ErrMsg: Couldn't execute query; couldn't find linked table
  35.     Q93145  How Access Handles Logins to Attached SQL Tables
  36.     Q88655  How Access Uses SQL Server Connections
  37.  
  38. DDE & OLE Issues
  39.     Q94108 Parameter Queries Are Not Supported As DDE Topics
  40.     Topics supported in Access are listed in the README.TXT file
  41.     Article Pending:  DDE timeout when DDE module called from a 
  42.                       DDE client
  43. Btrieve Issues
  44.     Q93685 Couldn't find Object <tablename>
  45.     Article Pending: Corrupt Error Message with Attached Btreive Table
  46.     Article Pending: User is Unable to Attach to a Btrieve Database.
  47.  
  48.  
  49. ------------------------------------------------------------------------
  50. ------------------------------------------------------------------------
  51.  
  52. Setup Issues
  53.  
  54. ------------------------------------------------------------------------
  55.  
  56. Q88914 Running MS-DOS SHARE with Windows for Workgroups
  57. ------------------------------------------------------------------------
  58. Summary:
  59. During the installation of Microsoft Access, Setup automatically
  60. inserts the following MS-DOS command in the AUTOEXEC.BAT file:
  61.  
  62.    <MS-DOS directory>\SHARE.EXE /L:500
  63.  
  64. If you are running the Microsoft Windows for Workgroups operating
  65. system, it is recommended that this SHARE command be removed.
  66.  
  67. More Information:
  68. Windows for Workgroups has its own sharing mechanism (VSHARE.386),
  69. which is loaded with Windows (there is an entry for it in the
  70. SYSTEM.INI file). If you load SHARE before running Windows for
  71. Workgroups, VSHARE will not load. Everything should work correctly,
  72. but the number of locks available to you will be limited by the number
  73. specified when SHARE was loaded (determined by the /L parameter--the
  74. default is 20). VSHARE, on the other hand, dynamically allocates the
  75. number of locks available on demand. The number of available locks is
  76. very important if your Windows for Workgroups machine is going to act
  77. as a server.
  78.  
  79. ------------------------------------------------------------------------
  80. Q90105 Couldn't Find SYSTEM.MDA or UTILITY.MDA File
  81. ------------------------------------------------------------------------
  82. Summary:
  83. When Microsoft Access is started, one or both of the following error
  84. messages may be displayed:
  85.  
  86.    Couldn't find file 'SYSTEM.MDA'
  87.  
  88.    Couldn't find file 'UTILITY.MDA'
  89.  
  90. These errors occur if the SystemDB and UtilityDB settings in the
  91. [Options] section of the MSACCESS.INI file point to a directory that
  92. does not contain the SYSTEM.MDA or UTILITY.MDA file. These errors also
  93. occur if the directory points to a share in which there is no
  94. connection.
  95.  
  96. If the directory does not exist, the following error message is
  97. displayed:
  98.  
  99.    Invalid Path 'pathname' 
  100.  
  101. More Information:
  102. A good way to manage the MSACCESS.INI file is to keep backup copies 
  103. that pertain to particular setups. Have one setup for starting in a
  104. workgroup on a network and have another that allows for starting on a
  105. local machine. To change setups, copy the appropriate backup .INI file
  106. over the MSACCESS.INI file.
  107.  
  108. ------------------------------------------------------------------------
  109. Q90863 Older Versions of Shared DLLs Cause Problems with Access
  110. ------------------------------------------------------------------------
  111. Summary:
  112. Shared dynamic-link libraries (DLLs) in your system older than those
  113. supplied with Microsoft Access version 1.0 or Microsoft Windows
  114. version 3.1 can cause unexpected errors with Microsoft Access.
  115.  
  116. To avoid problems, make sure that all shared DLLs are at least as
  117. current as those supplied with Microsoft Windows operating system
  118. version 3.1 or Microsoft Access version 1.0, and that they are all
  119. located in the WINDOWS\SYSTEM subdirectory.
  120.  
  121. More Information:
  122. The shared DLLs used by Microsoft Access are:
  123.  
  124.    COMMDLG.DLL
  125.    OLECLI.DLL
  126.    OLESRV.DLL
  127.    DDEML.DLL
  128.    SHELL.DLL
  129.    VER.DLL
  130.  
  131. (These DLLs are also used by Windows-based applications other than
  132. Microsoft Access.)
  133.  
  134. Microsoft Access supplies the same DLL versions as Windows 3.1, and it
  135. requires these (or newer) versions for correct operation; older
  136. versions can cause errors.
  137.  
  138. Microsoft Access and Windows copy shared DLLs into the WINDOWS\SYSTEM
  139. subdirectory, and that is where Microsoft Access first looks for them.
  140. If it doesn't find one or more of the shared DLLs, it looks in the
  141. directory where Microsoft Access is installed, and then in the current
  142. directory.
  143.  
  144. Often, Microsoft Access finds outdated or incorrect DLLs because
  145. third-party software with old or foreign DLLs has been installed or
  146. reinstalled, overwriting the correct DLLs. Some third-party software
  147. packages copy DLLs into directories other than WINDOWS\SYSTEM,
  148. creating multiple copies and making the problem harder to track and
  149. resolve.
  150.  
  151. Microsoft Access will not reload DLLs previously loaded by another
  152. software package; it will only load shared DLLs not already loaded. If
  153. the previously loaded DLLs are incorrect, they can cause problems with
  154. Microsoft Access.
  155.  
  156. If the Microsoft Access Setup program fails to locate a shared DLL, or
  157. detects an older version of one, it issues an error message such as:
  158.    Outdated XXXX.DLL found. Please reinstall MSAccess.
  159.    -or-
  160.    Can't find XXXX.DLL.
  161.  
  162. ------------------------------------------------------------------------
  163. Q92639 Cannot Install Cue Cards Without Installing Help
  164. ------------------------------------------------------------------------
  165. Summary: 
  166.  
  167.  SYMPTOMS
  168.    During a custom installation, you can select and deselect options
  169.    through the Microsoft Access Setup Options dialog. If you deselect
  170.    "Help," the size of the "Cue Cards" files increases from 1688 K to
  171.    5112 K. However, the total disk "Space required" does not increase 
  172. and
  173.    the size of "Help" does not decrease from 3424 K to 0 K.
  174.  
  175. CAUSE
  176.    You must have Help loaded in order to use Cue Cards. Therefore, when
  177.    you deselect Help, the size of the Cue Cards files increases to
  178.    include the size of the Help files.
  179.  
  180.    "Help" and "Cue Cards" are separate selections because it is possible
  181.    to install and use the Help files without installing the Cue Cards
  182.    files.
  183.  
  184. ------------------------------------------------------------------------
  185. Q92824 Custom Setup May Show Zero or Negative Disk Space Needed
  186. ------------------------------------------------------------------------
  187. Summary:
  188. The amount of disk space required for each option does not display a
  189. consistent number when running a custom installation.
  190.  
  191. More Information:
  192. The setup program calculates and displays the total space that you
  193. will need, it does not just display a flat number. If you already have
  194. the same version installed the option will display a zero for required
  195. disk space. If a previous version of one of the options was much
  196. greater, the required disk space will display a negative number.  An
  197. example of this would be if you added more data or objects to the
  198. NWIND.MDB. In the Sample Apps Disk requirement you would notice a
  199. negative number.
  200.  
  201. Steps to Reproduce Behavior
  202. ---------------------------
  203. 1. Run the setup program for Microsoft Access from Disk 1.
  204. 2. Choose Custom Installation.
  205. 3. Notice the required disk space for the options: some may
  206.    be zero or negative.
  207.  
  208. ------------------------------------------------------------------------
  209. Q93694 Setup Problem Regarding the COMMDLG.DLL File and MS Access
  210. ------------------------------------------------------------------------
  211. SYMPTOMS
  212.    The following error message dialog may appear when trying to open a
  213.    database:
  214.  
  215. CAUSE
  216.    The following error message is displayed:
  217.       Outdated 'COMMDLG.DLL' Please Re-install Microsoft Access.
  218.  
  219. RESOLUTION
  220.    1. You most likely have more than one version of the COMMDLG.DLL on
  221.       your computer.  You need to delete or rename duplicate versions of
  222.       COMMDLG.DLL.
  223.    2. Make sure the COMMDLG.DLL in the windows system sub-directory is
  224.       newer than:
  225.  
  226.          03/10/92  for Windows 3.1 or
  227.          10/01/92  for Windows for Workgroups or
  228.          10/25/92  for Microsoft Access
  229.  
  230.    3. You are using a third party non-compatible COMMDLG.DLL
  231.  
  232. More Information:
  233. To search for all occurrences of COMMDLG.DLL, perform the following
  234. steps:
  235. 1. Exit Windows.
  236. 2. Search for any other copies of COMMDLG.DLL. The following command
  237.    at the DOS prompt will locate all copies on drive C.  You will need
  238.    to do this for each drive that is located on your path statement in
  239.    your AUTOEXEC.BAT file; the drive where your windows directory is
  240.    located; and the drive that you have Microsoft Access installed.
  241.       C:\ cd\
  242.       C:\ DIR COMMDLG.DLL /s
  243.  
  244.    ONLY one should be on your disk in the windows/system directory.
  245.    If you have one or two copies that have been installed elsewhere by
  246.    other applications, they should be deleted or renamed.
  247.  
  248. How to install a new COMMDLG.DLL
  249. --------------------------------
  250. If the user has deleted all duplicates of COMMDLG.DLL and still gets
  251. the error in Microsoft Access, the user can copy COMMDLG.DL_ from disk
  252. 1 of the Microsoft Access retail package to their hard disk, then copy
  253. EXPAND.EXE from disk 3 of their WINDOWS 3.1 diskettes.  COMMDLG.DL_
  254. can be expanded using the expand utility.  Care should be taken not to
  255. copy COMMDLG.DL$ from the Microsoft Access diskettes.  This file can
  256. only be decompressed with the Microsoft Access Setup.
  257.  
  258. The syntax for using EXPAND.EXE is:
  259.    c:\<path>\EXPAND <path>\COMMDLG.DL_ c:\windows\system\COMMDLG.DLL
  260.  
  261. Other problems
  262. --------------
  263. A situation can arise during setup when it tries to update
  264. the COMMDLG.DLL but returns an error that it can't get
  265. access to the file.  In most cases, this means that some
  266. other application is running that is using the COMMDLG.DLL and
  267. therefore Microsoft Access setup can not update it.
  268.  
  269. The solution is to make sure no applications are running in
  270. windows at the time of setup.  To do this, move all icons
  271. from the STARTUP group into a temporary group (in Program
  272. Manager).  Also, edit the WIN.INI file and clear both the
  273. 'run' and 'load' lines so that they read:
  274.  
  275.    [windows]
  276.    RUN=
  277.    LOAD=
  278.  
  279. It might also be necessary to edit the AUTOEXEC.BAT to look
  280. for conflicting TSR's, although this would be the least
  281. likely cause.
  282.  
  283. ------------------------------------------------------------------------
  284. Unconfirmed: Some TSR's and other programs may cause Setup to fail
  285. ------------------------------------------------------------------------
  286. Summary:
  287. During the installation of Microsoft Access, Setup may fail while trying
  288. to copy the file:
  289.  
  290.       README.TX$
  291.  
  292. Common causes for failure at this point generally are related to the use
  293. of TSR programs loaded at DOS level and/or similar programs loaded
  294. in Windows directly.
  295.  
  296. To check this remove all unnecessary TSR's and Drivers from the
  297. CONFIG.SYS and AUTOEXEC.BAT files, remove Icons from the
  298. Startup Group in Program Manager, and remove items from the 
  299. Load= and Run= lines in the WIN.INI file.
  300.  
  301. More Information:
  302. Known programs that have repeatedly caused this kind of behavior include:
  303. APPEND.EXE     a DOS TSR loaded in AUTOEXEC.BAT file
  304. SUBST.EXE      a DOS TSR loaded in AUTOEXEC.BAT file
  305. BILLMNDR.EXE   a Auto bill reminder loaded with
  306.                Quicken by Intuit Software.  This can
  307.                reside on the LOAD= line of the WIN.INI
  308.  
  309. ------------------------------------------------------------------------
  310. Article Pending:  Check command in Stacker 3.0 reports errors in .mdb 
  311.                   files
  312. ------------------------------------------------------------------------
  313.  
  314. The "lost sector groups" errors being reported by "CHECK /=D /F" are
  315. 100% benign.  The Access files are not corrupt in any way.
  316.  
  317. There have been several reports of Access .mdb files getting
  318. corrupted when running Access on machines running Stacker 3.0.  
  319. The symptom is that running Stacker's "check /=D /F" command 
  320. reports that the .mdb file is corrupt and must be deleted.
  321.  
  322. The undocumented CHECK switch "/=D" is a low level internal
  323. debugging tool for use by the developers at Stac Electronics.  When used 
  324. with "/=D /F", CHECK is very zealous about reporting *all* possible 
  325. problems, no matter how benign.  It will sometimes return messages that 
  326. imply that files are corrupted when they really aren't.  This is what 
  327. is happening with Access files.
  328.  
  329. "Lost sector group" error messages from "CHECK /=D /F" are not real
  330. errors, and should be completely ignored.
  331.  
  332. Stac Electronics and Microsoft are actively working with *one*
  333. customer that has reported an occasionally reproducible case of data
  334. corruption when his Access .mdb file is on a Stacker 3.0 volume. This
  335. has only been reported by one person, and only while running Stacker 3.0.
  336.  
  337. In spite of what has been reported in a couple of trade magazines, we
  338. are not currently aware of ANY bugs that would cause data corruption in
  339. Access databases on Stacked drives.  Anyone who has experienced any 
  340. case of Access reporting that his .mdb is corrupted should report it 
  341. to Access PSS via the Access forum (GO MSACCESS).  We take reports of 
  342. these problems VERY seriously, and will do whatever is necessary to 
  343. track them down.
  344.  
  345. This problem is not unique to Access.  It has been reported against 
  346. other programs as well and is not exclusive to database products.
  347.  
  348.  
  349. ------------------------------------------------------------------------
  350.  
  351. Print Merge Issues
  352.  
  353. ------------------------------------------------------------------------
  354.  
  355. Q93427  Using Data From Access In A Word For Windows Print Merge 
  356. ------------------------------------------------------------------------
  357. Summary:
  358.  
  359. Microsoft Word for Windows does not supply a converter for Microsoft
  360. Access database files.  To use data from a Microsoft Access database
  361. in Microsoft Word for Windows, the data must be converted to a format
  362. which Microsoft Word for Windows recognizes. This can be done by
  363. exporting the data from Microsoft Access as text, or copying tables
  364. and queries from Microsoft Access and pasting them into a Microsoft
  365. Word for Windows document.
  366.  
  367. This article described the steps to create a data file in Microsoft
  368. Word for Windows using each of the methods described above.
  369.  
  370. More Information:
  371.  
  372. A data file is a comma or tab separated file that contains information
  373. that can be used in Microsoft Word for Windows for a print or mail
  374. merge.
  375.  
  376. A field name in Microsoft Word for Windows cannot contain more than 20
  377. characters. A field name must begin with a letter and can contain only
  378. letters, numbers, and the underline character (_). For example:
  379.  
  380. FirstName, LastName, Address, City, State, Postal_Code
  381. Randy, Johnson, 123 West St., Baker, OR, 97445
  382. Jennifer, Smith, 5 Circle Court, Yorkshire, WI, 34507
  383.  
  384. Method One:  Copying and Pasting
  385. --------------------------------
  386.  
  387. 1. From the Database window, select the table or query
  388.    that contains the information you want.
  389.  
  390. 2. Choose Copy from the Edit menu.
  391.  
  392. 3. Activate Microsoft Word for Windows and open a new document.
  393.  
  394. 4. From the Edit menu, select Paste.
  395.  
  396. Note: If there are spaces in your field name you will need to delete
  397. them once you have pasted the data into Microsoft Word for Windows.
  398.  
  399. 5. Save this document as MyData.Doc.
  400.  
  401. Because this method does not place each field inside quotation marks,
  402. you may encounter errors if any of the fields contain tabs.
  403.  
  404. Method Two: Using The Transfer Text Macro Action
  405. ------------------------------------------------
  406.  
  407. 1. Open a new macro from within Access.
  408.  
  409. 2. Add the macro action TransferText with the following
  410.    arguments:
  411.  
  412.       Transfer Type: Export Delimited
  413.       Specification Name: <leave blank>
  414.       Table Name: <name of the table or query you wish
  415.                    to export.>
  416.       File Name: <valid DOS file name.>
  417.          (Example: c:\winword\mydata.txt)
  418.       Has Field Name: Yes
  419.  
  420.  
  421. This is a one time export. If the data in your database changes
  422. you will need to re-export it, overwriting the original file.
  423.  
  424. 3. Perform the following steps in Microsoft Word for Windows:
  425.  
  426.      a. Open the main document.
  427.  
  428.      b. Choose Print Merge from the File menu.
  429.  
  430.      c. Choose the Attach Data File button.
  431.  
  432.      d. Select the exported text file that you created in step 2.
  433.   Note:  if you did not specify a full path name for the text file, 
  434.          it will be in the same directory as your Microsoft
  435.          Access database.
  436.  
  437. Now you can use the merge features of Microsoft Word for Windows:
  438. Insert Merge Fields, Edit Data Field, Check, and Print Merge. The
  439. check button will make a pass through the data document and check for
  440. errors, such as those caused by commas or tabs stored in the Microsoft
  441. Access fields.
  442.  
  443.  
  444.  
  445. ------------------------------------------------------------------------
  446. Article Pending: Sending The Current Record To Word For Windows Via DDE
  447. ------------------------------------------------------------------------
  448. Summary:
  449.  
  450. This article describes the steps for creating a form which 
  451. allows the user to press a button to send the current record 
  452. to Microsoft Word for Windows. The data sent is merged into 
  453. a pre-written letter and printed.
  454.  
  455. The article assumes that you understand Dynamic Data 
  456. Exchange,(DDE), setting bookmarks in Word for Windows, and 
  457. creating modules in Microsoft Access. 
  458.  
  459. More Information:
  460.  
  461. Step One: Create the Winword Document
  462. -------------------------------------
  463. 1) Start Winword and open a new document.
  464.  
  465. 2) Type in the following:
  466.  
  467.      CompanyName
  468.      Address
  469.      City, Region, PostalCode
  470.      Country
  471.  
  472.      Dear ContactName,
  473.  
  474.      NorthWind Traders would like to thank you for 
  475.      your business during the past year.  Enclosed 
  476.      you will find several samples of new products 
  477.      that we are excited to announce.  
  478.      
  479.      Sincerely,
  480.      NorthWind Traders.
  481.  
  482. Note: Winword will fail if the field names contain spaces
  483. when attempting to complete the merge.  Plus if you copy
  484. the text into a Winword document, be sure to remove the tabs.
  485.  
  486. 3) Save this document as DDEMERGE.DOC.
  487.  
  488. 4) To create the bookmarks, highlight CompanyName and
  489.    choose Bookmark from the Insert menu.  Name the 
  490.    Bookmark "CompanyName", without quotes.
  491.  
  492. 5) Repeats these steps, creating bookmarks for the 
  493.    fields: Address, City, Region, PostalCode, Country,
  494.    and ContactName.
  495.  
  496.  
  497. Step Two: Create The Access Basic Modules
  498. =========================================
  499.  
  500. 1) Open the example database NWIND.MDB. (One of 
  501.    the following modules uses the function STARTAPP()
  502.    which is located in the module Introduction to 
  503.    Programming.
  504.  
  505. 2) Create a new module called Print Merge.
  506.  
  507. 3) Place the following statement in the (declarations) 
  508.    section:
  509.         Dim Mergechan As Integer  
  510.  
  511. 4) Create a new function called Initiate_Word () 
  512.  
  513.    Function Initiate_Word ()
  514.    Dim Chan As Variant
  515.    Dim WordTopics As Variant     
  516.    Chan = StartApp("Winword", "System")
  517.  
  518.       On Error GoTo AlertUser:
  519.       WordTopics = DDERequest(Chan, "Topics")
  520.  
  521.       If InStr(1, WordTopics, "DDEMERGE.DOC") = 0 Then
  522.         DDEExecute Chan, "[FILEOPEN(""DDEMERGE.DOC"")]"
  523.       End If
  524.  
  525.       DDETerminate Chan
  526.       Mergechan = DDEInitiate("Winword", "DDEMERGE.DOC")
  527.  
  528.    Exit Function
  529.  
  530.    AlertUser:
  531.       MsgBox "Access is unable to initiate a DDE 
  532.         channel with the document DDETEST.DOC"
  533.       Resume Next 
  534.    End Function    
  535.  
  536. 5) Create a new function called Send_Record()
  537.  
  538.    Function Send_Record ()
  539.  
  540.      Dim Chan As Variant
  541.      Dim ControlName As Control
  542.      Dim BookMarks As String
  543.   
  544.      On Error GoTo CatchBlanks:
  545.  
  546.      DDEPoke Mergechan, "CompanyName", 
  547.           Forms![Customers]![Company Name]
  548.      DDEPoke Mergechan, "ContactName", 
  549.           Forms![Customers]![Contact Name]
  550.      DDEPoke Mergechan, "Address", 
  551.           Forms![Customers]![Address]
  552.      DDEPoke Mergechan, "City", 
  553.           Forms![Customers]![City]
  554.      DDEPoke Mergechan, "Region", 
  555.           Forms![Customers]![Region]
  556.      DDEPoke Mergechan, "PostalCode", 
  557.           Forms![Customers]![Postal Code]
  558.    
  559.      DDEExecute Mergechan, "[FilePrint]"
  560.     
  561.      Exit Function
  562.  
  563.    CatchBlanks:
  564.       If MsgBox("One of these fields is blank. Would
  565.         you like to continue?", 52) = 6 Then
  566.         Resume Next
  567.       Else
  568.         Exit Function
  569.       End If
  570.    End Function
  571.  
  572. Note: Each of the DDEPoke statements should be on one
  573.       line in your function.  They are split in this
  574.       article for readability.
  575.  
  576. 6) Create a function called Terminate_MergeChan():
  577.  
  578.    Function Terminate_MergeChan ()
  579.  
  580.      DDETerminate MergeChan
  581.  
  582.    End Function
  583.  
  584.  
  585. 7) Choose Compile All from the Run menu and then
  586.    close and save the module.
  587.  
  588.  
  589. Step Three: Create the Form
  590. =========================================
  591. 1) Open the form [Customers] in design mode.
  592.  
  593. 2) Set the OnOpen property of the form to:
  594.      =Initiate_Word()
  595.  
  596. 3) Set the OnClose property of the form to:
  597.      =Terminate_MergeChan()
  598.  
  599. 4) Add a new button to the Customers form.
  600.  
  601. 5) Set the Caption property of the button to:
  602.      Print Letter.
  603.  
  604. 6) Set the OnPush property of the button to:
  605.      =Send_Record()
  606.  
  607. 7) Save the form and switch to browse mode. Click on the
  608.    Print Letter button. The current record will be sent
  609.    to Word for Windows, merged into the document 
  610.    DDEMERGE.DOC and then printed.
  611.  
  612.  
  613. ------------------------------------------------------------------------
  614. Unconfirmed: Word Print Merge With Fail if the First Field Is NULL
  615. ------------------------------------------------------------------------
  616. If the first field in any record is NULL, Word will fill the merge fields
  617. with incorrect data or fail to merge that record.  The simplest work-around
  618. is to add a counter to the Access table so that there is always data in the
  619. first field. We are working with the Word group to confirm and resolve 
  620. this issue.
  621.  
  622.  
  623. ------------------------------------------------------------------------
  624. Unconfirmed: Save As an embedded Word Document Causes File to Be Deleted
  625. ------------------------------------------------------------------------
  626. If you try to "Save As" a Word document that is embedded in an Access 
  627. table as an OLE field to an already existing DOS file, your DOS file is 
  628. deleted and NO new file is created, thus you have NO local copy of the 
  629. file. Note that the file in OLE field is Not affected.
  630. More information and Work Around:
  631.  
  632. When editing a document that is embedded in an Access table you might 
  633. want to save it as a DOS file. To do that you select "Save As" from File 
  634. menu of Word. In the case that the DOS file already exists, Word will 
  635. give you a warning and will delete the existing DOS file BUT will not 
  636. save the new version in its place. There are two solutions: Either "Save 
  637. As" twice (the first time the file is going to be deleted and the second 
  638. time created again). Or use a non existing file name, for example you 
  639. might first save your document as "mydoc.doc" then "mydoc2.doc" and so 
  640. on. Note again, that the embedded Word document is not affected.
  641.  
  642.  
  643. ------------------------------------------------------------------------
  644.  
  645. ODBC Issues
  646.  
  647. ------------------------------------------------------------------------
  648.  
  649. Q90151 Windows for Workgroups, Novell, SQL Server, and Access
  650. ------------------------------------------------------------------------
  651. Summary:
  652. If you are running SQL Server on a NetWare network and try to add
  653. Access and Windows for Workgroups, you will not be able to talk to
  654. SQL Server from Access version 1.0. Windows for Workgroups and SQL
  655. Server have NetWare support, but the two are currently incompatible.
  656.  
  657. More Information:
  658. Named pipes (the communication protocol used by SQL Server) are
  659. serviced from NETAPI.DLL. The Windows for Workgroups NETAPI.DLL
  660. overrides the Novell NETAPI.DLL, so communication with SQL Server is
  661. broken.
  662.  
  663. ------------------------------------------------------------------------
  664. Unconfirmed: GP Fault Using an Out of Date ODBC Driver
  665. ------------------------------------------------------------------------
  666. Summary:
  667. SYMPTOMS
  668. Access will give you a "General Protection Fault (GPF) in ODBC.DLL
  669. when using an out of date ODBC.DLL driver.  
  670.    
  671. CAUSE
  672. The problem is that when Access initiates an ODBC connection, 
  673. ODBC does not check the version of the ODBC driver.  The 
  674. ODBC setup program will only replace an older version of the 
  675. ODBC.DLL with a newer version if the file resides in the 
  676. WINDOWS\SYSTEM sub-directory.  If the file is found elsewhere,
  677. ODBC setup will not go out and replace.  This could cause a 
  678. problem if the directory where the older .DLL resides is found in 
  679. the path.
  680.  
  681. RESOLUTION
  682. Rename or delete the old ODBC.DLL and run the ODBC setup 
  683. program from the setup disks that come with Access.  This 
  684. will install an up-to-date ODBC.DLL file.
  685.  
  686. ------------------------------------------------------------------------
  687. Unconfirmed: INF: Error MSG: ODBC - couldn't find ODBC.DLL
  688. ------------------------------------------------------------------------
  689. Summary:
  690. If you receive the error message:
  691.  
  692.    ODBC - couldn't find ODBC.DLL
  693.   
  694. The ODBC.DLL file you are using may be old, you may have duplicate 
  695. ODBC.DLL files on your system and the wrong one is being used, or the 
  696. ODBC.DLL file you are using may be damaged or corrupted.   
  697.  
  698. More Information:
  699. It is possible that there are other situations which may indirectly 
  700. cause this error message to display. The other things which you will 
  701. need to check to troubleshoot this problem include:
  702.  
  703. 1. Use File Manager to search for multiple, corrupted, or outdated 
  704.    copies of these files:
  705.    DBNMP3.DLL
  706.    SQLSRVR.DLL
  707.    NETAPI.DLL
  708.    COMMDLG.DLL
  709. 2. Make sure that the files listed above are in their appropriate 
  710.    locations. All of the files except NETAPI.DLL are usually installed 
  711.    in the \WINDOWS\SYSTEM directory. The NETAPI.DLL file is a network 
  712.    specific driver and is usually located in the network's program 
  713.    directory, which should be in the path.
  714. 3. Use another application, such as Q+E, SAF, or PowerBuilder, on the 
  715.    same machine to attempt to attach to the same data source. If you 
  716.    cannot access the data source from another application then it is 
  717.    probably a network problem, such as NETAPI.DLL, or a problem 
  718.    with the server, not with Access or ODBC.
  719. 4. Attempt to attach to another data source, if available, such as 
  720.    another SQL server. If you can attach to another server, then the 
  721.    original server may be down or you may need to re-configure the entry 
  722.    for that server using the ODBC Administration Utility.
  723. 5. Attempt to attach to the same data source from another machine. If 
  724.    you couldn't access the SQL server from another machine that would 
  725.    indicate a network wide problem or that the server may be down or not 
  726.    communicating.
  727. 6. Try increasing your ODBC time-out settings in the ODBC section of 
  728.    the MSACCESS.INI file.
  729. 7. Check with the system administrator to see if the SQL server is up, 
  730.    available for transactions, and operating properly.
  731. 8. Reinstall ODBC after performing a clean boot and renaming the 
  732.    ODBC.DLL, DBNMP3.DLL, and SQLSRVR.DLL files.
  733.  
  734. ------------------------------------------------------------------------
  735. Unconfirmed:  ErrMsg: Couldn't execute query; couldn't find linked table
  736. ------------------------------------------------------------------------
  737. Summary:
  738.  
  739. If you receive the error messages:
  740.  
  741.    Couldn't execute query; couldn't find linked table'
  742.    Invalid object name TABLE_NAME
  743.  
  744. TABLE_NAME is the name of the table you are attempting to use. The most 
  745. likely cause of this error is an incorrect entry in the [SQLSERVER] 
  746. section of your WIN.INI file. 
  747.  
  748. To correct this situation you need to verify that the [SQLSERVER] 
  749. section 
  750. of your WIN.INI file has the correct entry for the server you are 
  751. attempting to attach to.
  752.  
  753. More Information:
  754.  
  755. The [SQLSERVER] section of your WIN.INI file should look like this:
  756.  
  757. [SQLSERVER]
  758. MYSERVER=dbnmp3,\\MYSERVER\PIPE\SQL\QUERY
  759. YOURSRVR=dbnmp3,\\YOURSRVR\PIPE\SQL\QUERY
  760.  
  761. If the server name in the entry for the server you are trying to access 
  762. is 
  763. incorrect or if the entry has additional spaces in it this error will 
  764. occur.
  765.  
  766. ------------------------------------------------------------------------
  767. Q93145  How Access Handles Logins to Attached SQL Tables
  768. ------------------------------------------------------------------------
  769. Summary:
  770. How Microsoft Access handles a login to an attached SQL table depends
  771. on how the table was originally attached, and whether the login and
  772. password were saved with the table information. It may also depend on
  773. who attached the SQL table, what rights that person has to that table,
  774. what rights you have to that table, and where the tables are located
  775. (different servers, different databases, same database).
  776.  
  777. More Information:
  778. If the "Save login ID and password locally" option was enabled when a
  779. SQL table is attached, you will not be prompted for a login ID and
  780. password. Instead, you automatically receive the rights to each table
  781. that are appropriate for the login ID used when the table was
  782. attached.
  783.  
  784. If this option was not enabled, you are prompted for a login ID and
  785. password once for each unique data source, and you receive the rights
  786. to each table that are appropriate for the login ID that you use.
  787.  
  788. NOTE: A unique data source is composed of the unique combination of a
  789. SQL server and a database on that server.
  790.  
  791. So, if you attach multiple SQL tables and use different login IDs with
  792. different rights for each table, but do not enable the option to save
  793. the login and password information, the next time you access the
  794. tables, the login ID and password you supply for each data source will
  795. determine the authority you have to the tables from that data source.
  796.  
  797.  
  798. ------------------------------------------------------------------------
  799. Q88655  How Access Uses SQL Server Connections
  800. ------------------------------------------------------------------------
  801. Summary:
  802.  
  803. This article describes how Access uses connections to SQL Server and
  804. how application developers can minimize use of these connections.
  805.  
  806. This article assumes the reader is highly knowledgeable about the low
  807. level interaction between applications and SQL Server.
  808.  
  809. More Information:
  810.  
  811. The conventional application that accesses a server does it in a
  812. simple single-tasking manner, requiring a single connection to the
  813. server. Access, however, is not the typical conventional server
  814. front-end. Many of its features, including updatable views (dynasets),
  815. joins between local and server data, execution of complex expressions
  816. that the server may not be able to handle, and seamless transition
  817. from one server to another, require Access to obtain more connections
  818. than the conventional front-end needs.
  819.  
  820. Although some servers, such as Microsoft SQL Server, are not too
  821. stingy on giving out connections, there are servers that place strict
  822. limits on the number of connections an application can open. (In some
  823. installations, SQL Server also places absolute restrictions on
  824. connections.) When designing applications for the more restrictive
  825. servers, it is important to understand how Access uses connections.
  826.  
  827. Connections are opened by Access when it needs to execute a query on
  828. the server (which it must do to build dynasets or static views),
  829. obtain the data in a dynaset, or update data on the server. These
  830. connections can be categorized into two types: connections needed to
  831. build the working set, and connections needed to service dynasets.
  832.  
  833. Both types of views available in Access (static views and dynasets)
  834. are built by executing a query (called a "local" query to
  835. differentiate it from other types of queries discussed below). This
  836. local query processes Access and foreign ISAM data (both locally and
  837. file server based) and remote server data, and pulls it into a
  838. temporary table that represents the view. To build static views, the
  839. actual data is stored in the temporary table, whereas to build
  840. dynasets, pointers to the actual data are stored.
  841.  
  842. When server data is included in the local query, execution of the
  843. query involves asking the server (or servers) for data, which is done
  844. by opening connections and sending queries to the server. Each query
  845. sent to the server requires that a connection be opened.  If more than
  846. one query is to be sent to the server, a single connection could be
  847. used and the queries executed serially. However, this would typically
  848. require the user to wait for all of the server queries to complete
  849. before any data would appear. Therefore, Access executes the server
  850. queries in parallel, requiring a connection for each.
  851.  
  852. The number of queries sent to a server may not be entirely obvious.
  853. Much of the time, access to all of the remote base tables will be
  854. combined into a single query, if all of the base tables reside on the
  855. same server. In the worst case, each server base table referenced by
  856. the local query will require a connection. There are several factors
  857. that could compel Access to split a local query into several server
  858. queries:
  859.  
  860.  - If server data is joined to data from other sources (that is,
  861.    local, foreign ISAM, and other servers), the Access optimizer may
  862.    decide that it is more efficient not to combine references to two
  863.    tables on the same server into a single query. For example, if the
  864.    Customers and Order Items tables are on a server and the Orders
  865.    table is in a local Microsoft Access database, then it is likely
  866.    that the optimizer will decide to ask for the Customers and Order
  867.    Items tables separately, rather than asking for the cross-product
  868.    of the two, to join to the Orders table. As you can tell from this
  869.    example, this is unlikely to happen in a real scenario.
  870.  
  871.  - If an expression involved in the query cannot be executed on the
  872.    server (either because the server doesn't support it or because the
  873.    semantics provided by the server differ greatly with those provided
  874.    by Access), the expression will be executed locally. An extreme
  875.    example of this is a local query with a restriction that calls a
  876.    user-defined function. Although this may not require separating
  877.    remote tables into separate server queries, it will if the
  878.    expression that isn't executable on the server is somehow involved
  879.    with the join between the two tables. Note that in Access,
  880.    expressions containing a conjunction that can be executed on the
  881.    server will be executed locally in their entirety. These
  882.    expressions are not split to execute part locally and part on the
  883.    server.
  884.  
  885.  - The parameters used to attach tables on the same server to an
  886.    Access database differ. For example, if two tables are in different
  887.    databases, or if they are being accessed using different user names
  888.    and passwords, then separate connections will be required to
  889.    execute a local query referencing both of them.
  890.  
  891.    Connections opened in the execution of a local query will be kept
  892.    open until the working set containing the queries is closed.
  893.  
  894.    Connections are also opened in support of dynasets. But, unlike the
  895.    server queries sent during the execution of a local query, the
  896.    queries sent to the server in support of a dynaset are executed
  897.    entirely and very quickly.  This is because they are used to fill
  898.    portions of the dynaset with data (given the pointers to the data
  899.    provided by the local query), and to do updates to the server.
  900.    Therefore, Access opens only one connection per attached server,
  901.    provided that the link attachment information is the same for each
  902.    server tables.
  903.  
  904. As a result of the above rules, when an Access query is executed, it
  905. typically requires only one (for a static view or two (for a dynaset)
  906. connection. This doesn't represent an extravagant use of server
  907. connections, but good applications could involve the execution of many
  908. Access queries that could occupy many server connections very quickly.
  909. There are some steps the designer can take to minimize the use of
  910. connections:
  911.  
  912.  - Reduce the number of queries required by the application. Each
  913.    form, subform, data sheet, report, and list box requires a query,
  914.    and each of these queries that accesses server data will require at
  915.    least one or two connections. Close forms, data sheets, and reports
  916.    as soon as they are no longer needed. Also, bring server data to a
  917.    local database where practical, especially for filling list boxes.
  918.  
  919.  - Avoid queries that join server data to local data to server data,
  920.    as described above. These type of queries will most likely be
  921.    executed using a connection for each server table.
  922.  
  923.  - Avoid expressions that must be executed locally when joining server
  924.    data together. Each of the tables involved with such a join
  925.    expression, or that is restricted by a WHERE clause containing such
  926.    an expression, will need to be executed locally. It should be noted
  927.    that separating expressions into separate query objects will not
  928.    help alleviate this problem, because the optimizer combines all
  929.    query objects in a single query before execution for efficiency.
  930.  
  931.  - Use static working sets when seeing other users' changes, or when
  932.    making changes yourself is not required. This will avoid the
  933.    connections needed to support dynasets.
  934.  
  935. With an understanding of how Access uses connections, and with prudent
  936. application design, you should not run out of server connections.
  937.  
  938.  
  939. ------------------------------------------------------------------------
  940.  
  941. DDE & OLE Issues
  942.  
  943. ------------------------------------------------------------------------
  944.  
  945. Q94108 Parameter Queries Are Not Supported As DDE Topics
  946. ------------------------------------------------------------------------
  947. Summary:
  948.  
  949. Microsoft Access does not support Parameter Queries via DDE.
  950. Parameter driven queries require parameters for which Microsoft
  951. Access has no mechanism to receive via DDE.
  952.  
  953. More Information:
  954.  
  955. Attempts to initiate a DDE channel with a parameter query
  956. will fail.  The resulting error message is dependent upon
  957. the DDE Client. In Microsoft Visual Basic the user will
  958. see:
  959.  
  960.    "No foreign application responded to DDE Initiate".
  961.  
  962. In Microsoft Excel the error message is:
  963.  
  964.    "Remote Data not Accessible. Start 'MSACCESS.EXE'?"
  965.  
  966. One work around is to link an Microsoft Access form to the DDE
  967. client. This link will transfer the parameter to Microsoft
  968. Access. Then the modify the query to refer to the form for the
  969. parameter.  The steps to use this method with Microsoft
  970. Excel follow:
  971.  
  972.  
  973. A. Create the DDE Link
  974. -------------------
  975. 1. Start Microsoft Excel and open a new Macro sheet.
  976.  
  977. 2. In cell A1 enter "DAIR" without quotation marks.
  978.  
  979. 3. Save the macro sheet as DDETEST.XLM.
  980.  
  981. 4. Select cell A1 and choose Copy from the Edit menu.
  982.  
  983. 5. Start Microsoft Access and open the Northwind Traders
  984.    database, NWIND.MDB.
  985.  
  986. 6. Create a new, unbound form.
  987.  
  988. 7. Choose Paste Special from the Edit menu.
  989.  
  990. 8. Select Text in the Data Type list box and then click
  991.    Paste Link. This creates a Text box with the formula:
  992.  
  993.        =DDE("Excel","C:\ACCESS\DDETEST.XLM","R1C1")
  994.  
  995. 9. If the Properties box is not available choose Properties
  996.    from the View menu.
  997.  
  998. 10. Select the text box created in step 7 and change the
  999.     Control Name property to: DDE Parameter.
  1000.  
  1001. 11. Save the form as [DDE Link Form].
  1002.  
  1003.  
  1004. B. Modify the Query
  1005. ----------------
  1006. 1. Open the query [Products By Category (Parameter)] in
  1007.    design mode.
  1008.  
  1009. 2. Select Parameters from the Query menu and delete the criteria
  1010.    [Enter a Category ID].
  1011.  
  1012. 3. Under the field [Category ID] in the query grid replace the
  1013.    existing criteria with:
  1014.  
  1015.          =Forms![DDE Link Form]![DDE Parameter]
  1016.  
  1017. 4. To test the query verify that the macro sheet DDETEST.XLM
  1018.    is open in Microsoft Excel and that the form
  1019.    [DDE Link Form] is in Browse mode. Run the query and
  1020.    verify that the products are in the category "DAIR".
  1021.  
  1022. C. Create a Macro to Open the Form
  1023. ----------------------------------
  1024. 1. Create a new macro.
  1025.  
  1026. 2. Add the following macro action:
  1027.  
  1028.       OpenForm
  1029.          Form Name:  DDE Link Form
  1030.          View:       Form
  1031.  
  1032. 3. Save this macro as "Open Form", without quotes.
  1033.  
  1034.  
  1035. D. Create a Macro to Run the Query
  1036. ----------------------------------
  1037. 1. Create a new macro.
  1038.  
  1039. 2. Add the following macro action:
  1040.  
  1041.       OpenQuery
  1042.          Query Name:  Products by Categories (Parameter)
  1043.          View:        Datasheet
  1044.  
  1045. 3. Save this macro group as "Run Query", without quotes.
  1046.  
  1047.  
  1048. E. Create the DDE Macro
  1049. --------------------
  1050. 1. In the macro sheet DDETEST.XLM enter the following macro:
  1051.  
  1052.       Cell    Command
  1053.       ---------------
  1054.       A1      DAIR
  1055.       A2
  1056.       A3      chan=INITIATE("MSAccess","System")
  1057.       A4      =EXECUTE(chan,"Open Form")
  1058.       A5      =APP.ACTIVATE("Microsoft Access")
  1059.       A6      =SEND.KEYS("{F9}")
  1060.       A7      =TERMINATE(chan)
  1061.       A8      =ON.TIME(0.010,Run_Query)
  1062.       A9
  1063.       A10     chan=INITIATE("MSAccess","System")
  1064.       A11     =EXECUTE(chan,"Run Query")
  1065.       A12     =TERMINATE(chan)
  1066.       A13     =RETURN()
  1067.  
  1068.  
  1069. 2. Place your cursor in cell A10, choose Define Name from
  1070.    the Formula menu, enter Run_Query in the Name: box. Click
  1071.    the option Command and then choose OK. This gives the
  1072.    name Run_Query to the second  macro.
  1073.  
  1074. 3. Close all forms, macros, and queries in Access.
  1075.  
  1076. 4. To run the macro place your cursor in cell A3, choose
  1077.    Run from the Macro menu, and then press OK. The Excel macro
  1078.    will run much more quickly if you set the DDE TimeOut option
  1079.    in Microsoft Access to 1 second.
  1080.  
  1081. Notes:
  1082.    Why are SendKeys used?
  1083.       Excel has instructed Microsoft Access to open the
  1084.       form[DDE Link Form]. When Microsoft Access opens
  1085.       the form it will attempt to update the DDE link in
  1086.       the control [DDE Parameter]. However, Excel will
  1087.       not process any requests until it receives
  1088.       notification that Microsoft Access has successfully
  1089.       completed the macro. Microsoft Access will not finish
  1090.       executing until it successfully updates the link to Excel.
  1091.       Eventually Microsoft Access will time-out and display #Error.
  1092.       The SendKeys command sends the key sequence F9 which
  1093.       refreshes the form.
  1094.  
  1095.    How would you get this information to Excel?
  1096.       If you need to transfer the result of the query to
  1097.       Excel change the query to a Make Table query. You
  1098.       will then be able to use the DDE Request function
  1099.       to retrieve the data in the table from Excel.
  1100.  
  1101. Reference:
  1102. The DDE Server Topics supported by Microsoft Access are
  1103.       documented in the file README.TXT which in
  1104.       installed in your Microsoft Access directory.
  1105.  
  1106. For information on parameter queries refer to the Microsoft
  1107.       Access User's Guide, Chapter 7 Designing Action
  1108.       Queries and Parameter Queries, pp.178-181
  1109.  
  1110. For information on creating DDE links in forms and reports
  1111.       refer to the Microsoft Access User's Guide, Chapter
  1112.       13 Using Picture, Graphs, and Other Objects, pp.337-339
  1113.  
  1114. ------------------------------------------------------------------------
  1115. Topics supported in Access are listed in the README.TXT file
  1116. ------------------------------------------------------------------------
  1117. The topics that are supported in Access as a DDE server are listed in 
  1118. the README.TXT file that is installed in the Access directory.  The 
  1119. title of the section is:  Using Microsoft Access as a DDE Server.  This 
  1120. same information is also documented in Q89586 in the Microsoft Knowledge 
  1121. Base.
  1122.  
  1123. ------------------------------------------------------------------------
  1124. Article Pending:  DDE timeout when DDE module called from a DDE client
  1125. ------------------------------------------------------------------------
  1126. Access macros can run modules that perform DDE statements.  If this 
  1127. macro is called from a DDE client, such as Microsoft Visual Basic (VB) 
  1128. or Excel the operation will be performed but no data will be returned to 
  1129. Access and Access will return a DDE time out error.
  1130.  
  1131. Example:  A VB application that initiates a channel to Access and tells 
  1132. it to run a macro.  This macro initiates a channel to Excel to get some 
  1133. information off of  a spreadsheet and then imports the data into a 
  1134. table.  The macro will run correctly from Access and places the data in 
  1135. the Access table.  But when VB runs the macro, the channel to Excel is 
  1136. initiated, but Access pauses when it requests the data from Excel, and 
  1137. eventually gets a DDE Timeout.  No data is transferred back to Access.
  1138.  
  1139. There is currently no direct work around for this issue.  But often the 
  1140. issue can be resolved by looking at how the program is being run.  In 
  1141. this example, Visual Basic is being used as a front end to Access.  The 
  1142. macro could be run directly from Access and if there are other steps 
  1143. that VB needs to perform the DDE channel could be turned around, making 
  1144. the VB application the server and calling the code from Access or 
  1145. perhaps the commands could all be shifted over to Access Basic.
  1146.  
  1147.  
  1148. ------------------------------------------------------------------------
  1149.  
  1150. Btrieve Issues
  1151.  
  1152. ------------------------------------------------------------------------
  1153.  
  1154. Q93685 Couldn't find Object <tablename> with Btrieve files
  1155. ------------------------------------------------------------------------
  1156. Summary:
  1157. A number of people have reported receiving the error message:  
  1158. Couldn't find object '<table name.'
  1159. when attempting to import or attach to Btrieve files.  This article 
  1160. explains how to identify and fix this problem.
  1161.  
  1162. More Information:
  1163. Microsoft Access requires the Xtrieve-format data dictionary files,
  1164. FILE.DDF, INDEX.DDF, and FIELDS.DDF, to be able to use Btrieve
  1165. files.  FILE.DDF contains the DOS file name of each data table
  1166. in the dictionary.  These file names can be in any of the valid four
  1167. DOS formats:
  1168.    1.  File Only  ("mydata.dat")
  1169.    2.  Relative Path ("..\dev\test\mydata.dat")
  1170.    3.  Fully Qualified ("c:\tools\dev\test\mydata.dat")
  1171.    4.  Universal Naming Convention, UNC
  1172.          ("\\myserver\users\joe\tools\dev\test\mydata.dat")
  1173.  
  1174. When importing or attaching to a Btrieve file, Microsoft Access
  1175. retrieves the DOS filename from FILE.DDF.  It then attempts to open
  1176. this file.  If the file doesn't exist in the location specified,
  1177. you will receive the error:
  1178.  
  1179.        Couldn't find object
  1180.  
  1181. In the case of the first 2 examples, the ability to open the
  1182. file is dependent on the current directory being correct.  For
  1183. example #1, MYDATA.DAT must exist in the current directory.
  1184. For example #2, MYDATA.DAT, the "..\DEV\TEST" directory must
  1185. exist relative to the current directory, and MYDATA.DAT must
  1186. exist in it.
  1187.  
  1188. Exactly which directory is the current directory is complicated
  1189. by the fact that under Windows, all applications share the same
  1190. environment, and therefore the same current directory.  If you
  1191. change the current directory in Excel, for example by doing a
  1192. File Open and changing directories to open a file, the current
  1193. directory for Microsoft Access is also changed.
  1194.  
  1195. So, the first step to fixing the problem is to find out what the
  1196. paths are in FILE.DDF. You can do this by opening FILE.DDF in
  1197. WRITE, the word processor provided with Windows.  When asked if
  1198. you want to convert this file to WRITE format, specify No
  1199. Conversion.  You will see a bunch of characters that look like a
  1200. box.  Scroll to the end of the file.  There you will see the DOS
  1201. filenames of your Btrieve data files.  The extension is usually
  1202. .DAT, but doesn't have to be.
  1203.  
  1204. WARNING: DO NOT save the file after you are finished viewing
  1205. it with WRITE.  If you save this file, it will become corrupt and
  1206. not repairable.
  1207.  
  1208. Now that you have the file names, there are 2 things you can do
  1209. to fix the problem:
  1210.  
  1211. 1. Move the files into the correct location(s).  This is the
  1212.    easiest fix, and the one we recommend.
  1213. 2. Using Btrieve or one of the third-party and/or shareware
  1214.    tools, modify FILE.DDF so that the path to the .DAT file is
  1215.    correct.  This method is much more complicated, and not
  1216.    recommended for anyone not intimately familiar with Btrieve.
  1217.  
  1218. ------------------------------------------------------------------------
  1219. Article Pending: Corrupt Error Message with Attached Btreive Table
  1220. ------------------------------------------------------------------------
  1221. SYMPTOMS
  1222.    When you try to attach to a Btrieve table you receive the following
  1223. error message:
  1224.  
  1225.       <tablename> is corrupted or isn't a Microsoft Access database.
  1226.  
  1227. CAUSE
  1228.    When Microsoft Access attaches to a Btrieve table, it compares the
  1229. information in the DDF files with the information in the tablename.DAT
  1230. file. The most common cause of the above error message is a difference
  1231. in the information for the indexes.
  1232.  
  1233. RESOLUTION
  1234.    The user will need to redefine these indexes in a manner that
  1235. Microsoft Access will not return the above error message. The most
  1236. common solution is to redefine the index to be the exact length of the
  1237. field that it is based upon.
  1238.  
  1239. More Information:
  1240.  
  1241. Example #1:
  1242. -----------
  1243.  
  1244. The tablename.DAT file is defined with three columns:
  1245.  
  1246.     Column name   Field Length    Index Length
  1247.     ------------------------------------------
  1248.     Firstname     10              <= Combined length of
  1249.     Lastname      10              <= 20 characters
  1250.     Company       25
  1251.  
  1252. Index1 is defined with a length of 20 characters which combines the
  1253. firstname and lastname fields.
  1254.  
  1255. Resolution: This index would need to be redefined into one multiply
  1256. segment index, each with a defined length of 10 characters.
  1257.  
  1258.  
  1259. Example #2:
  1260. -----------
  1261.  
  1262. The tablename.DAT file is defined with three columns:
  1263.  
  1264.     Column name   Field Length    Index Length
  1265.     ------------------------------------------
  1266.     Firstname     10              4 characters
  1267.     Lastname      10
  1268.     Company       25
  1269.  
  1270. Index2 is defined with a length of 4 characters which is shorter than
  1271. the defined length of the firstname field.
  1272.  
  1273. Resolution: This index would need to be redefined from 4 characters in
  1274. length to 10 characters in length, matching the size of the firstname
  1275. field.
  1276.  
  1277.  
  1278. Example #3:
  1279. -----------
  1280.  
  1281. The tablename.DAT file is defined with three columns:
  1282.  
  1283.     Column name   Field Length    Index Length
  1284.     ------------------------------------------
  1285.     Firstname     10              12 characters
  1286.     Lastname      10
  1287.     Company       25
  1288.  
  1289. Index3 is defined with a length of 12 characters which is slightly
  1290. longer than the defined length of the firstname field.
  1291.  
  1292. Resolution: This index would need to be redefined from 12 characters
  1293. in length to 10 characters in length, matching the size of the
  1294. firstname field.
  1295.  
  1296.  
  1297. Example #4:
  1298. -----------
  1299.  
  1300. The tablename.DAT file is defined with three columns:
  1301.  
  1302.     Column name   Length
  1303.     --------------------
  1304.     Firstname -   10
  1305.     Lastname  -   10
  1306.     Company   -   25
  1307.  
  1308. Index4 is defined on a numeric byte range and not defined on any
  1309. fields in the table.
  1310.  
  1311. Resolution: This index would need to be removed completely and then
  1312. redefined on an existing field and that has the same defined length as
  1313. the field it is based upon.
  1314.  
  1315.  
  1316. These types of indexes are valid to the Btrieve file format.  Xtrieve
  1317. from Novell simply ignores this type of index.  Microsoft Access
  1318. interrupts these indexes as being invalid and returns the above error
  1319. message.
  1320.  
  1321. How does a user go about changing the index?  The user has several
  1322. options:
  1323.  
  1324. 1. Ask the vendor that created the Btrieve files to change the indexes to
  1325.    match the length of the defined fields.
  1326.  
  1327. 2. Redefine the indexes with Btrieve to match the length of the
  1328.    defimed fields.
  1329.  
  1330. 3. Redefine the indexes with Xtrieve to match the length of the
  1331.    defined fields.
  1332.  
  1333. 4. Use any third party utility that is available to modify the Btrieve
  1334.    indexes.
  1335.  
  1336. ------------------------------------------------------------------------
  1337. Article Pending: User is Unable to Attach to a Btrieve Database.
  1338. ------------------------------------------------------------------------
  1339. SYMPTOMS
  1340.    When you try to attach to a Btrieve database you get an error
  1341.    message when you choose the FILE.DDF:
  1342.  
  1343.       Table <tablename> is exclusively locked.
  1344.    or
  1345.       Couldn't open file <filename>.
  1346.  
  1347. CAUSE
  1348.    Whenever Microsoft Access tries to attach to a table, it needs to
  1349.    open the target table exclusively tempoarily. If the target Btrieve
  1350.    table is open by any other users at the same time that Microsoft
  1351.    Access tries to attach to the table, one of the above error messages
  1352.    will be returned.
  1353.  
  1354. RESOLUTION
  1355.    The only workaround at this time is to find an available time when
  1356.    the target Btrieve table is not being used by any other users. Once
  1357.    Microsoft Access has attached to the Btrieve table, you should not
  1358.    receive the above error messages.
  1359.  
  1360.